Relationship to
VRML97
Shout3D 2.0 differs from VRML97 in a number
of ways. This document classifies these differences into four
groups:
- Removals:
A removed feature is a feature of VRML97 that is not
part of Shout3D 2.0. When reading or converting VRML97 input,
these nodes and fields are simply ignored.
- Syntax
Changes: These are features that behave exactly like
VRML97 in a viewer, but are represented differently in the Field
or Node reference. Such features can be read from VRML97 files
and converted to their representation in Shout3D with no loss of
data or functionality.
- Additions:
These are features that are not available in VRML97.
Their addition greatly increases the power of Shout3D.
- Outright
Changes: These are the four features that are simply
different.
It
is important to note that VRML97 files translate quite nicely into
Shout3D. The Shout3D production team authors all its content with
standard VRML97 authoring tools and either reads it directly into
Shout3D applets or runs that content through a file converter for a
more compact representation.
Removals
Removals: Concepts
Certain high-level concepts and constructs
have been removed from VRML97 in creating Shout3D. From their
removal, a great number of the removed nodes and fields will follow.
These removed constructs are:
- EventIn,
EventOut -- all fields are just plain fields and are
treated the same.
- Navigation
- the core does not require any built-in navigation for
the viewer
- PROTOS and EXTERNPROTOS
- Scripting
- Default
Texture Mapping - To texture map an object, texture
coordinates must be supplied. Otherwise, textures will not be
applied.
Removals: Lighting Model
Shout3D 2.0 has two
different kinds of appearance with two different lighting
models.
The Appearance node uses
a simplified version of the VRML97 lighting model.
It same as in Shout3D 1.0 as in Shout3D 2.0. What
remains are the interactions between DirectionalLights (or no
lights) and the emissiveColor, diffuseColor, and color-per-vertex
properties of Materials and Geometry. What has been removed are the
effects of ambientColor, shininess, specularColor, fog, SpotLights,
and PointLights. There is a related addition to
the lighting model, in that the transparency and diffuseColor
will now modulate all textures applied to an IndexedFaceSet.
The
MultiAppearance node greatly expands the rendering model to include
multi-texturing and specular highlights. This new
node only comes with Shout3D 2.0, not Shout3D 1.0. It is a
completely new type of appearance that works with any of Shout3D's
geometries (excepting IndexedLineSet and PointSet). See the
nodes reference for more information about the
MultiAppearance.
Removals: Nodes
The following
nodes have been removed from VRML97 in creating
Shout3D. Note that there are fewer removed nodes in the
current version than before. Shout3D now contains six VRML
geometries that were missing before (Box, Cone, Cylinder, Sphere,
Extrusion, ElevationGrid) as well as WorldInfo.
AudioClip |
LOD |
PointLight |
Text |
Collision |
MovieTexture |
ProximitySensor |
TextureTransform |
CylinderSensor |
Normal |
Script |
VisibilitySensor |
Fog |
NormalInterpolator |
Sound |
|
FontStyle |
PixelTexture |
SphereSensor |
|
Inline |
PlaneSensor |
SpotLight |
|
Removals: Fields
Of the nodes
that remain, some have had fields removed, in order to pare
them down to the functionality that is relevant to Shout3D. These
fields may be added in future releases.
Generally speaking, all the set_ and _changed
fields
have been removed because the EventIn/EventOut concept has been
removed. In all cases, except where noted that a field has been
removed, these names have simply been mapped to a regular field
(e.g., the interpolator's set_fraction
is now fraction), or removed if
redundant (e.g., Transform's set_translation
is removed but translation remains).
In addition, the following fields have been
removed:
- Anchor, Group, Transform
-- bboxCenter and bboxSize.
- Appearance -
textureTransform
Textures may not be transformed by matrices, the
(u,v) coordinates are always taken directly from the
textureCoordinate field of the IndexedFaceSet..
- Background - see
Outright Changes:
Background
- Billboard
- axisOfRotation, bboxCenter,
bboxSize
- DirectionalLight - ambientIntensity
- IndexedFaceSet - convex, normal, normalIndex,
normalPerVertex
Normals are
generated automatically, based on the creaseAngle. They may not
be specified via fields.
- Material
- ambientIntensity, shininess,
specularColor
These removals are in
keeping with the simplified light model.
- NavigationInfo
- avatarSize, speed, type
- TimeSensor
- enabled
- TouchSensor
- hitTexCoord
- Viewpoint
- jump, bindTime
Syntax Changes
For all of the following, no data need be
lost. File readers can parse the information from VRML97 files and
cast this information into the Shout3D syntax.
Syntax Changes: Field Types
The Field types
have been changed. This specification has twelve field
types, based on six kinds of storage (boolean, double, float,
integer, Node, and String) and the ability to store either a single
value or an array of values. All of the VRML97 field types map into
one of these field types, so file readers need only copy the data
from the VRML97 node into the appropriate field type, as given in
the Node Reference.
This new scheme may at first appear to lose strong typing
information, because VRML97 fields such as SFVec3f and SFColor are
both cast into the same type of field, FloatArrayField, in this
specification. However, the new usage types in this specification
(see Additions:Field Usage Types) provide a basis for much more
powerful and extensible strong typing.
Additions
Additions: Lighting Model
The lighting model has two additions in the
way textures are modulated. First, the transparency in a texture is modulated by the transparency
field, if
present, in the associated Material node. Second, the diffuse color in the lighting model is always
modulated by the
diffuseColor
field, if present, in the associated Material node.
In VRML97 this was only the case for luminance textures. In Shout3D,
RGB textures are modulated as well. This means that color per vertex
will have an effect on textures objects as well.
Additions: API
The entirety of
the programming API is new. A full desciption may be found
in the programming API
document.
Additions: Field Usage Types
Field Usage
Types are new, and allow for strong typing. Field Usage
Types describe how each field of each node is to be used, and the
Node Reference specifies what the correct usage is for each of its
types. Hence, a FloatArrayField can be used to store a 'COLOR,'
'COLOR_ARRAY,' 'COORD3,' 'COORD3_ARRAY,' etc. The set of usage types
is extensible, so that nodes can be constructed that use the twelve
basic field types in new ways.
Additions: Fields
The following fields have been added to
nodes in Shout3D.
- Anchor
- touchTime
This field fills a void left by the VRML97
Anchor. With it, one can know exactly when an anchor was
clicked. This allows entities watching the field (see
FieldObservers in the API) to know when the viewpoint or file is
about to change.
- Anchor,
Billboard, Group, TouchSensor, Transform - hidden
This
boolean field provides a simple way to 'turn off' a part of a
scene.
- IndexedLineSet - lineWidth
This feature is
crucial for effective use of lines as a graphical primitive.
- Light,
DirectionalLight - affectedGroups
This new field greatly increases
an author's control of which groups are to be affected by a
light. The default behavior is exactly like VRML97.
- PointSet
- pointSize
An indisposable feature for making points a truly
usable type of geometry.
- Switch
- children, hidden
The Switch node has been made a
grouping node, so it now inherits fields from the class
Group. The
children field is
not under user control. Rather, it is kept up to date,
reflecting the selected child given by the
choice and whichChoice
fields.
- TimeSensor
- elapsedSeconds, numLoops
This field allows users to avoid
calculations required to determine the number of seconds that
have elapsed since the last loop began.
- TouchSensor - children,
hidden
The TouchSensor node has
been made a grouping node, and can now detect when the user
points to either the children of the TouchSensor node's parent
group, or to the children of the TouchSensor node itself.
Additions: Abstract Node Classes
The abstract
Node classes are new. In order to support an
object-oriented, extensible API, we have added five new abstract
node classes from which other nodes are derived: Bindable, Geometry,
Interpolator, Light, Texture. These classes also support the Field
Usage types. For example, the Appearance node's
texture
field has a usage type of TEXTURE_NODE, and so
may be set to any node, currently existing or yet to be implemented,
that is derived from the abstract node class Texture.
Additions: New Nodes
Shout3D contains many extra and new nodes
that are not part of the VRML97 specification. These are added
features of Shout3D, and do not impact the behavior of the VRML97
nodes.
Outright Changes
Outright Changes: Binding Model
The binding
model has been simplified.This specification does not use
the binding stack of VRML97. Rather, a simplified model is used (see 2.5.8,
Bindable Nodes). The binding stack was removed because many
users found it confusing.
Outright Changes: Background
The Background
node has been changed entirely. Rather than a model of
sky/ground color gradation or surrounding bubble of textures, the
new Background node supplies a simple colored or textured backdrop
that does not change with the point of view.
Outright Changes: Billboard
Billboard nodes
are always aligned with the projection plane and the viewer
Y-axis.Specifically, they always rotate to face parallel to
the near clipping plane, as illustrated by the following example
(source here):
By way of comparison, here is the same
example rendered as VRML97, which aligns billboards to face the
viewer:
Outright Changes: Texture Format
GIFs are the
required format, PNG is optional. This is in contrast to
VRML97, which uses PNG as the required format.
Copyright© 1999-2000, Eyematic Interfaces, Inc.
|